using System;

namespace Insesoft.Entities
{
    public class Orden : EntidadBase
    {
        #region Private Members
        private string numpedido;
        private Cotizacion cotizacion;
        private DateTime fecinicio;
        private DateTime? fecfinal;
        private Empresa empresa;
        #endregion

        #region Public Properties

        public virtual string NumPedido
        {
            get { return numpedido; }
            set
            {   
                CheckLength("NumPedido", value, 20);
                isChanged |= (numpedido != value); numpedido = value;
            }
        }

        public virtual Cotizacion Cotizacion
        {
            get { return cotizacion; }
            set { isChanged |= (cotizacion != value); cotizacion = value; }
        }

        public virtual DateTime FecInicio
        {
            get { return fecinicio; }
            set { isChanged |= (fecinicio != value); fecinicio = value; }
        }

        public virtual DateTime? FecFinal
        {
            get { return fecfinal; }
            set { isChanged |= (fecfinal != value); fecfinal = value; }
        }

        public virtual Empresa Empresa
        {
            get { return empresa; }
            set { isChanged |= (empresa != value); empresa = value; }
        }

        public virtual string ClienteNombre
        {
            get
            {
                if (cotizacion != null && cotizacion.Cliente != null)
                    return Cotizacion.Cliente.Nombre;
                return string.Empty;
            }
        }

        public virtual int CotizacionId
        {
            get
            {
                return cotizacion != null ? Cotizacion.Id : 0;
            }
        }

        public virtual DateTime? FecAplicada
        {
            get
            {
                return cotizacion != null ? Cotizacion.FecAplicada : null;
            }
        }

        public virtual int NumDias
        {
            get
            {
                var final = FecFinal.HasValue ? FecFinal.Value : DateTime.Today;
                return (final - fecinicio).Days;
            }
        }

        #endregion
    }
}
